Una routine di programmazione scritta in modo da poter essere condivisa contemporaneamente da programmi diversi. Viene usata nei sistemi operativi e in altri software di sistema (come nei driver) dove diverse azioni si sviluppano in contemporanea e devono essere monitorate e bloccate da qualche meccanismo di controllo centrale. Mentre un programma sta eseguendo una porzione di codice rientrante, un altro programma può interromperne lÆazione, iniziarla daccapo oppure continuarla dal punto in cui è stata lasciata a metà. La routine rientrante è scritta in modo che nessuna delle sue porzioni di codice sia modificabile (non cambia nessuno dei valori contenuti nella routine) e così che la routine medesima non tenga traccia del proprio progresso. Trattandosi di un elemento invariabile, la routine può quindi risiedere in memoria in copia singola ed essere utilizzata da tutti i programmi che ne hanno bisogno. Spetta al programma chiamante tenere traccia del progresso della routine e
intraprendere azioni correttive qualora questa si blocchi. Perciò, durante lÆesecuzione della routine, si tengono copie separate dei dati associati a quella particolare esecuzione.
Di conseguenza, la stessa copia della routine può essere utilizzata più volte e contemporaneamente da un numero indefinito di processi o di utenti, a condizione di avere in memoria lo spazio necessario per contenere le informazioni temporanee.
A livello esemplificativo, è come se diverse persone stessero preparando un piatto di spaghetti facendo riferimento alla stessa ricetta, ma tenendo appunti separati sul suo progresso. Gli ingredienti e la ricetta resterebbero sempre invariati, ma ciascuno di loro dovrebbe tener traccia autonomamente del progresso compiuto.
|